/*
 * Copyright (c) 2010 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * Warning! This file is generated. Modify at your own risk.
 */

package com.google.api.services.gan.model;

import com.google.api.client.http.HttpHeaders;
import com.google.api.client.json.GenericJson;
import com.google.api.client.json.JsonString;
import com.google.api.client.util.Key;
import java.util.List;
import com.google.api.client.util.DateTime;

/**
 * Model definition for Gan.Publisher.
 *
 * This class models an object which will be transmitted to or from the Gan service. To reduce the
 * data transferred during service requests, you may remove members that contain data elements that
 * your application does not need.
 *
 * For a detailed explanation, see: <a href="http://code.google.com/p/google-api-java-
 * client/wiki/Json"> http://code.google.com/p/google-api-java-client/wiki/Json</a>
 *
 * @author Google, Inc.
 */
public final class Publisher extends GenericJson {

  /**
   * The status of the requesting advertiser's relationship with this publisher.
   */
  @Key("status")
  private String status;

  /** The status of the requesting advertiser's relationship with this publisher. */
  public String getStatus() {
    return status;
  }

  /** The status of the requesting advertiser's relationship with this publisher. */
  public Publisher setStatus(String status) {
    this.status = status;
    return this;
  }
  /**
   * The kind for one publisher. The kind for a publisher.
   */
  @Key("kind")
  private String kind;

  /** The kind for one publisher. The kind for a publisher. */
  public String getKind() {
    return kind;
  }

  /** The kind for one publisher. The kind for a publisher. */
  public Publisher setKind(String kind) {
    this.kind = kind;
    return this;
  }
  /**
   * The name of this publisher.
   */
  @Key("name")
  private String name;

  /** The name of this publisher. */
  public String getName() {
    return name;
  }

  /** The name of this publisher. */
  public Publisher setName(String name) {
    this.name = name;
    return this;
  }
  /**
   * Classification that this publisher belongs to. See this link for all publisher classifications:
   * http://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107625&ctx
   * =cb&src=cb&cbid=-k5fihzthfaik&cbrank=4
   */
  @Key("classification")
  private String classification;

  /**
 * Classification that this publisher belongs to. See this link for all publisher classifications: h
 * ttp://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107625&ctx=cb
 * &src=cb&cbid=-k5fihzthfaik&cbrank=4
 */
  public String getClassification() {
    return classification;
  }

  /**
 * Classification that this publisher belongs to. See this link for all publisher classifications: h
 * ttp://www.google.com/support/affiliatenetwork/advertiser/bin/answer.py?hl=en&answer=107625&ctx=cb
 * &src=cb&cbid=-k5fihzthfaik&cbrank=4
 */
  public Publisher setClassification(String classification) {
    this.classification = classification;
    return this;
  }
  /**
   * The sum of fees paid to this publisher divided by the total number of clicks over the past
   * seven days. Values are multiplied by 100 for display purposes.
   */
  @Key("epcSevenDayAverage")
  private Object epcSevenDayAverage;

  /**
 * The sum of fees paid to this publisher divided by the total number of clicks over the past seven
 * days. Values are multiplied by 100 for display purposes.
 */
  public Object getEpcSevenDayAverage() {
    return epcSevenDayAverage;
  }

  /**
 * The sum of fees paid to this publisher divided by the total number of clicks over the past seven
 * days. Values are multiplied by 100 for display purposes.
 */
  public Publisher setEpcSevenDayAverage(Object epcSevenDayAverage) {
    this.epcSevenDayAverage = epcSevenDayAverage;
    return this;
  }
  /**
   * A rank based on commissions paid to this publisher over the past 90 days. A number between 1
   * and 4 where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least
   * money paid).
   */
  @Key("payoutRank")
  private String payoutRank;

  /**
 * A rank based on commissions paid to this publisher over the past 90 days. A number between 1 and
 * 4 where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least money
 * paid).
 */
  public String getPayoutRank() {
    return payoutRank;
  }

  /**
 * A rank based on commissions paid to this publisher over the past 90 days. A number between 1 and
 * 4 where 4 means the top quartile (most money paid) and 1 means the bottom quartile (least money
 * paid).
 */
  public Publisher setPayoutRank(String payoutRank) {
    this.payoutRank = payoutRank;
    return this;
  }
  /**
   * The sum of fees paid to this publisher divided by the total number of clicks over the past
   * three months. Values are multiplied by 100 for display purposes.
   */
  @Key("epcNinetyDayAverage")
  private Object epcNinetyDayAverage;

  /**
 * The sum of fees paid to this publisher divided by the total number of clicks over the past three
 * months. Values are multiplied by 100 for display purposes.
 */
  public Object getEpcNinetyDayAverage() {
    return epcNinetyDayAverage;
  }

  /**
 * The sum of fees paid to this publisher divided by the total number of clicks over the past three
 * months. Values are multiplied by 100 for display purposes.
 */
  public Publisher setEpcNinetyDayAverage(Object epcNinetyDayAverage) {
    this.epcNinetyDayAverage = epcNinetyDayAverage;
    return this;
  }
  /**
   * The requested publisher.
   */
  @Key("item")
  private Publisher item;

  /** The requested publisher. */
  public Publisher getItem() {
    return item;
  }

  /** The requested publisher. */
  public Publisher setItem(Publisher item) {
    this.item = item;
    return this;
  }
  /**
   * Date that this publisher was approved as a Google Affiliate Network publisher.
   */
  @Key("joinDate")
  private DateTime joinDate;

  /** Date that this publisher was approved as a Google Affiliate Network publisher. */
  public DateTime getJoinDate() {
    return joinDate;
  }

  /** Date that this publisher was approved as a Google Affiliate Network publisher. */
  public Publisher setJoinDate(DateTime joinDate) {
    this.joinDate = joinDate;
    return this;
  }
  /**
   * Websites that this publisher uses to advertise.
   */
  @Key("sites")
  private java.util.List<String> sites;

  /** Websites that this publisher uses to advertise. */
  public java.util.List<String> getSites() {
    return sites;
  }

  /** Websites that this publisher uses to advertise. */
  public Publisher setSites(java.util.List<String> sites) {
    this.sites = sites;
    return this;
  }
  /**
   * The ID of this publisher.
   */
  @Key("id") @JsonString
  private Long id;

  /** The ID of this publisher. */
  public Long getId() {
    return id;
  }

  /** The ID of this publisher. */
  public Publisher setId(Long id) {
    this.id = id;
    return this;
  }


  private HttpHeaders responseHeaders;

  /**
   * Sets the HTTP headers returned with the server response, or <code>null</code>.
   *
   * This member should only be non-null if this object was the top level element of a response. For
   * example, a request that returns a single Publisher would include the response headers, while a
   * request which returns an array of Publisher, would have a non-null response header in the
   * enclosing object only.
   */
  public void setResponseHeaders(HttpHeaders responseHeaders) {
    this.responseHeaders = responseHeaders;
  }

  /**
   * Returns the HTTP headers that were returned with the server response, or
   * <code>null</code>.
   */
  public HttpHeaders getResponseHeaders() {
    return responseHeaders;
  }
}
